package cn.tedu.spring.life;

import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

@Component
public class TestService {
    public TestService() {
        System.out.println("TestService的构造方法被调用了！");
    }

    // CopyOnWriteArrayList线程安全的集合类
    private final CopyOnWriteArrayList<String> copyOnWriteArrayList = new CopyOnWriteArrayList();

    @PostConstruct // 此注解：构造之后，所以此注解所描述的方法是在对象创建完成之后调用
    public void intList() {
        copyOnWriteArrayList.add("Tom");
        copyOnWriteArrayList.add("Jack");
        copyOnWriteArrayList.add("Jerry");
        copyOnWriteArrayList.add("Rose");
        System.out.println("bean对象创建完成并且执行了@PostConstruct所描述的方法");
    }

    // getList()所存在的意义就是为了获取copyOnWriteArrayList对象
    public List<String> getList() {
        return copyOnWriteArrayList;
    }

    @PreDestroy // 此注解所描述的方法在bean销毁时去执行的方法
    public void destroy() {
        copyOnWriteArrayList.clear();
        System.out.println("copyOnWriteArrayList集合已经被销毁");
    }

}
